package furstadminka;

import furstadminka.data.AllData;
import furstadminka.dbinterraction.Extractor;
import furstadminka.dbinterraction.Inserter;
import furstadminka.utils.BeanUtils;
import furstadminka.utils.Preconditions;

import java.io.File;
import java.io.Serializable;

/**
 * Бин с перечнем всех элементов меню
 *
 * @autor Vit
 */
public class MainListBean implements Serializable {
    /**
     * Локальная версия объекта с данными об всех элементах
     */
    private AllData localAllData = new AllData();
    /**
     * ИД элемента предписанного к удалению
     */
    private String versionIdForDel = "0";

    /**
     * При первичном появлении достает из БД все нобходимые данные
     */
    public MainListBean() {
        reloadData();
    }

    /**
     * Обновляет данные в локальной версии объекта
     */
    public void reloadData() {
        localAllData.dropData();
        Extractor.extractData(localAllData);
    }

    /**
     * Удаляет элемент из бд, изображение из папки и обновляет локальную версию объекта с данными
     */
    public void deleteElementFromData() {
        File imageFile = new File(Extractor.getImageFolder() + localAllData.getValue(versionIdForDel).getImage());
        if (!imageFile.equals(null)) {
            imageFile.delete();
        }
        Inserter.deleteRow(versionIdForDel);
        versionIdForDel = "0";
        reloadData();
        return;
    }

    /**
     * Сброс сесии и переадресация
     */
    public String logOut(){
        AutenticBean autenticBean = (AutenticBean) BeanUtils.getBean("autenticbean");
        Preconditions.notNull(autenticBean);
        autenticBean.logout();
        return "/login.xhtml";
    }

    public AllData getAllData() {
        return localAllData;
    }

    public void setAllData(AllData allData) {
        this.localAllData = allData;
    }

    public String getVersionIdForDel() {
        return versionIdForDel;
    }

    public void setVersionIdForDel(String versionIdForDel) {
        this.versionIdForDel = versionIdForDel;
    }
}
